package com.zhu.instructions.loads;
import com.zhu.instructions.base.Index8Instruction;
import com.zhu.rtda.Frame;
import com.zhu.rtda.InstanceOop;

/**
 * ALOAD 指令
 *
 * 操作码: 0x19
 * 操作数: 1 字节无符号整数 (index)
 * 功能: 将指定索引处的局部变量表中的引用（InstanceOop）加载到操作数栈顶。
 * 格式: aload index
 */
public class ALOAD extends Index8Instruction {

    @Override
    public void execute(Frame frame) {
        // 从局部变量表中获取指定索引的引用对象（InstanceOop）
        InstanceOop ref = (InstanceOop) frame.getLocalVars().getRef(this.index);
        // 将该引用推入操作数栈顶
        frame.getOperandStack().pushRef(ref);
    }
}
